#include <iostream>
using std::cout;
using std::endl;

void print(int x){
    cout << "print:" << x << endl;
}

void display(int x){
    cout << "display:" << x << endl;
}

void show(){
    cout << "show:" << endl;
}

int down(int x){
    cout << "down:" << endl;
    return x;
}

//将此类的函数指针的类型定名为Func
typedef void (*Func)(int);

void test1(){
    Func p = print;
    p(6);

    p = display;
    p(7);
}


void test0(){
    //定义函数指针时就已经确定了
    //这个函数指针只能指向特定类型的函数
    //返回类型、参数类型都确定了
    //省略形式
    void (*p)(int) = print;
    p(4);

    p = display;
    p(5);

    //完整形式
    void (*p2)(int) = &print;
    (*p2)(6);

    /* p = show;//error,参数不一致 */
    /* p(); */

    /* p = down; */
}

int main(void){
    test1();
    return 0;
}
